using System.Text.Json.Serialization;

namespace Sage.CloudStorage.Qiniu.Models
{
    /// <summary>
    /// 分片信息
    /// </summary>
    /// <remarks>
    /// 表示分片上传过程中单个分片的详细信息，包含分片编号、ETag、大小和上传时间等关键属性。
    /// 用于分片上传的管理和验证。
    /// </remarks>
    public class PartInfo
    {
        /// <summary>
        /// 分片编号
        /// </summary>
        /// <remarks>
        /// 分片的序号，从1开始递增。在分片上传过程中用于标识和排序各个分片。
        /// </remarks>
        [JsonPropertyName("partNumber")]
        public int PartNumber { get; set; }

        /// <summary>
        /// 分片的ETag值
        /// </summary>
        /// <remarks>
        /// 分片上传成功后返回的ETag，用于验证分片的完整性和唯一性。
        /// 在完成分片上传时需要提供此值。
        /// </remarks>
        [JsonPropertyName("etag")]
        public string Etag { get; set; } = "";

        /// <summary>
        /// 分片大小（字节）
        /// </summary>
        /// <remarks>
        /// 分片的实际大小，以字节为单位。用于统计和验证分片上传的数据量。
        /// </remarks>
        [JsonPropertyName("size")]
        public long Size { get; set; }

        /// <summary>
        /// 分片上传时间戳
        /// </summary>
        /// <remarks>
        /// 分片上传完成的时间戳（Unix时间戳，单位为纳秒）。
        /// 可用于分片上传的时间统计和排序。
        /// </remarks>
        [JsonPropertyName("putTime")]
        public long PutTime { get; set; }
    }
}
